جزوه · چالش دوم فصل چهارم · ساخت شاخه با یک فرمان ← بازگشت به فهرست
📘 چالش دوم فصل چهارم ساخت شاخه با یک فرمان
📅 تاریخ: چهارشنبه، ۲۸ مرداد ۱۴۰۵ 👤 مدرس: محمد عابدینی 🐚 Zsh · 🐧 Debian (کالی)
🚀 قبل از شروع، یه مثال ساده:

فرض کن می‌خوای یه درخت از پوشه‌ها بسازی که توی هر کدوم، چند تا پوشه دیگه داشته باشه. به‌جای اینکه یکی‌یکی با mkdir بسازی، می‌تونی با آکولادها ({}) و کاماها (,) توی یه خط، کل ساختار رو بسازی. اینجوری هم سریع‌تره هم تمیزتر!

▍ مقدمه

در این چالش، با یک تکنیک پیشرفته برای ایجاد چندین دایرکتوری به‌صورت همزمان آشنا می‌شوید. با استفاده از آکولادها (Brace Expansion) در Bash و Zsh، می‌توانید ساختارهای پیچیده را با یک دستور بسازید.

📌 ابزار اصلی:

mkdir -p → ایجاد دایرکتوری با تمام والدهای لازم

آکولادها (Brace Expansion): {} برای ایجاد ترکیب‌های مختلف

▍ دستور اصلی چالش

┌──(ya3in㉿kali)-[~/test] └─$ mkdir -p work/F{1/temp{1,2},2/temp{3,4},3/{tem5,temp6}}

• توضیح گام‌به‌گام

بیایید این دستور را تیکه‌تیکه بررسی کنیم:

آکولادها به این صورت کار می‌کنند:

🧩 تجزیه آکولادها:
  • F{1/temp{1,2},2/temp{3,4},3/{tem5,temp6}}
  • بخش‌های اصلی با کاما جدا شده‌اند: 1/temp{1,2}، 2/temp{3,4} و 3/{tem5,temp6}
  • هر بخش به این صورت گسترش می‌یابد:
    • 1/temp{1,2}1/temp1 و 1/temp2
    • 2/temp{3,4}2/temp3 و 2/temp4
    • 3/{tem5,temp6}3/tem5 و 3/temp6
  • کل این ساختار داخل F{...} قرار گرفته است:
    • F1/temp1
    • F1/temp2
    • F2/temp3
    • F2/temp4
    • F3/tem5
    • F3/temp6

▍ ساختار نهایی (خروجی)

work/ ├── F1/ │ ├── temp1/ │ └── temp2/ ├── F2/ │ ├── temp3/ │ └── temp4/ └── F3/ ├── tem5/ └── temp6/

توضیح: بعد از اجرای دستور، ساختار بالا ایجاد می‌شود. mkdir -p باعث می‌شود که اگر work یا F1 وجود نداشته باشند، ساخته شوند.

💡 نکته:

این تکنیک در Zsh و Bash هر دو کار می‌کند. فقط مطمئن شوید که فاصله‌ای بین آکولادها نگذارید.

▍ تمرین برای تثبیت

🧪 چالش شما:

با استفاده از آکولادها، دستور زیر را کامل کنید تا ساختار زیر ساخته شود:

projects/ ├── frontend/ │ ├── js/ │ └── css/ ├── backend/ │ ├── api/ │ └── db/ └── docs/ ├── guides/ └── images/

دستور خود را بنویسید:

mkdir -p ________________________________
✅ پاسخ تمرین:
┌──(ya3in㉿kali)-[~] └─$ mkdir -p projects/{frontend/{js,css},backend/{api,db},docs/{guides,images}}

توضیح: این دستور همه دایرکتوری‌های بالا را با یک خط می‌سازد.

📌 خلاصه:
  • mkdir -p → ایجاد دایرکتوری با والدها
  • {} → آکولادها برای گسترش ترکیب‌ها
  • , → جداکننده بین گزینه‌ها
  • با یک دستور می‌توانید کل ساختار را بسازید.